{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#| hide\n",
    "!pip install -Uqq nixtla utilsforecast"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#| hide \n",
    "from nixtla.utils import in_colab"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#| hide \n",
    "IN_COLAB = in_colab()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#| hide\n",
    "if not IN_COLAB:\n",
    "    from nixtla.utils import colab_badge\n",
    "    from dotenv import load_dotenv"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Fine-tuning with a specific loss function"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "When fine-tuning, the model trains on your dataset to tailor its predictions to your particular scenario. As such, it is possible to specify the loss function used during fine-tuning.\\\n",
    "\\\n",
    "Specifically, you can choose from:\n",
    "\n",
    "* `\"default\"` - a proprietary loss function that is robust to outliers\n",
    "* `\"mae\"` - mean absolute error\n",
    "* `\"mse\"` - mean squared error\n",
    "* `\"rmse\"` - root mean squared error\n",
    "* `\"mape\"` - mean absolute percentage error\n",
    "* `\"smape\"` - symmetric mean absolute percentage error"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/markdown": [
       "[![](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/Nixtla/nixtla/blob/main/nbs/docs/tutorials/07_loss_function_finetuning.ipynb)"
      ],
      "text/plain": [
       "<IPython.core.display.Markdown object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#| echo: false\n",
    "if not IN_COLAB:\n",
    "    load_dotenv()    \n",
    "    colab_badge('docs/tutorials/07_loss_function_finetuning')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1. Import packages\n",
    "First, we import the required packages and initialize the Nixtla client."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "from nixtla import NixtlaClient\n",
    "from utilsforecast.losses import mae, mse, rmse, mape, smape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "nixtla_client = NixtlaClient(\n",
    "    # defaults to os.environ.get(\"NIXTLA_API_KEY\")\n",
    "    api_key = 'my_api_key_provided_by_nixtla'\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "> 👍 Use an Azure AI endpoint\n",
    "> \n",
    "> To use an Azure AI endpoint, remember to set also the `base_url` argument:\n",
    "> \n",
    "> `nixtla_client = NixtlaClient(base_url=\"you azure ai endpoint\", api_key=\"your api_key\")`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#| hide\n",
    "if not IN_COLAB:\n",
    "    nixtla_client = NixtlaClient()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2. Load data"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's fine-tune the model on a dataset using the mean absolute error (MAE).\\\n",
    "\\\n",
    "For that, we simply pass the appropriate string representing the loss function to the `finetune_loss` parameter of the `forecast` method."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>unique_id</th>\n",
       "      <th>timestamp</th>\n",
       "      <th>value</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>1949-01-01</td>\n",
       "      <td>112</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1949-02-01</td>\n",
       "      <td>118</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>1949-03-01</td>\n",
       "      <td>132</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1949-04-01</td>\n",
       "      <td>129</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1949-05-01</td>\n",
       "      <td>121</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   unique_id   timestamp  value\n",
       "0          1  1949-01-01    112\n",
       "1          1  1949-02-01    118\n",
       "2          1  1949-03-01    132\n",
       "3          1  1949-04-01    129\n",
       "4          1  1949-05-01    121"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.read_csv('https://raw.githubusercontent.com/Nixtla/transfer-learning-time-series/main/datasets/air_passengers.csv')\n",
    "df.insert(loc=0, column='unique_id', value=1)\n",
    "\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3. Fine-tuning with Mean Absolute Error"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's fine-tune the model on a dataset using the Mean Absolute Error (MAE).\\\n",
    "\\\n",
    "For that, we simply pass the appropriate string representing the loss function to the `finetune_loss` parameter of the `forecast` method."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:nixtla.nixtla_client:Validating inputs...\n",
      "INFO:nixtla.nixtla_client:Preprocessing dataframes...\n",
      "INFO:nixtla.nixtla_client:Inferred freq: MS\n",
      "INFO:nixtla.nixtla_client:Calling Forecast Endpoint...\n"
     ]
    }
   ],
   "source": [
    "timegpt_fcst_finetune_mae_df = nixtla_client.forecast(\n",
    "    df=df, \n",
    "    h=12, \n",
    "    finetune_steps=10,\n",
    "    finetune_loss='mae',   # Set your desired loss function\n",
    "    time_col='timestamp', \n",
    "    target_col='value',\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "> 📘 Available models in Azure AI\n",
    ">\n",
    "> If you are using an Azure AI endpoint, please be sure to set `model=\"azureai\"`:\n",
    ">\n",
    "> `nixtla_client.forecast(..., model=\"azureai\")`\n",
    "> \n",
    "> For the public API, we support two models: `timegpt-1` and `timegpt-1-long-horizon`. \n",
    "> \n",
    "> By default, `timegpt-1` is used. Please see [this tutorial](https://docs.nixtla.io/docs/tutorials-long_horizon_forecasting) on how and when to use `timegpt-1-long-horizon`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAACHgAAAFhCAYAAAABCY9wAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAADtrElEQVR4nOzdd3hU1drG4d/MpPcCpNB7B+lNBOlNmhQVFOwesSCW81nOEctB5aioYEcBRQSlqAhI7zX0Jr1DQiippE1m9vdHIEeaJGGSnZDnvq5cOjt7r/VMykrIfuddFsMwDERERERERERERERERERERESk0LKaHUBERERERERERERERERERERE/p4KPEREREREREREREREREREREQKORV4iIiIiIiIiIiIiIiIiIiIiBRyKvAQERERERERERERERERERERKeRU4CEiIiIiIiIiIiIiIiIiIiJSyKnAQ0RERERERERERERERERERKSQU4GHiIiIiIiIiIiIiIiIiIiISCGnAg8RERERERERERERERERERGRQk4FHiIiIiIiIiIiIiIiIiIiIiKFnAo8REREREREpNiaOHEiFouFI0eOmB0lxywWCyNHjrzhea58br///jsPPPAAdevWxd3dHYvFctNjioiIiIiIiIhI7riZHUBERERERETELN27d2ft2rVERESYHSXH1q5dS5kyZQp0zlmzZrFu3ToaNGiAp6cnmzZtKtD5RUREREREREREBR4iIiIiIiJSjJUsWZKSJUuaHSNXmjdvXuBzfv3111itWU1An3rqKRV4iIiIiIiIiIiYQFu0iIiIiIiISJExdOhQKlSocNXxkSNHXrZtiMVi4amnnuL777+nZs2a+Pj4UL9+fX7//ffLrrvWNiaGYTB69GjKly+Pl5cXDRs2ZN68ebRt25a2bdv+7bUAy5Ytw2KxsGzZssuOL1q0iPbt2xMQEICPjw+tWrVi8eLFuf4YXGuLlnXr1tGqVSu8vLyIjIzk5Zdfxm6353rs67lU3CEiIiIiIiIiIubRX2hERERERETkljRnzhzGjRvHm2++yYwZMwgJCaFPnz4cOnTob6974403+Oc//0nHjh355Zdf+Mc//sGjjz7K3r1785xl8uTJdOrUiYCAACZNmsRPP/1ESEgInTt3zlORx1/t3r2b9u3bEx8fz8SJE/niiy/YsmULb7/99lXnOp1OMjMzb/jmcDhuKpOIiIiIiIiIiLietmgRERERERGRW1JqaiqLFi3C398fgIYNGxIZGclPP/3E//3f/13zmvj4eN577z369OnD+PHjs4/Xrl2bVq1aUb169VznSElJ4dlnn6VHjx7MmjUr+3i3bt1o2LAhr7zyCuvXr8/1uJe8+eabGIbBkiVLCAsLA6B79+7UqVPnqnMfeughJk2adMMx27Rpc1UHEhERERERERERMZcKPEREREREROSWdOedd2YXdwCEhYVRqlQpjh49et1r1q5dS1paGoMGDbrseMuWLSlfvnyecqxZs4bz588zZMgQMjMzL3tfly5dGD16NBcuXMDX1zdP4y9dupT27dtnF3cA2Gw2Bg4cyBtvvHHZuSNHjuSpp5664Zh//biJiIiIiIiIiEjhoAIPERERERERuSWFhoZedczT05PU1NTrXnPu3DkAwsPDr3rftY7lxOnTpwHo16/fdc85f/58ngs8zp07l+O85cqVo0yZMjcc02Kx5CmLiIiIiIiIiIjkHxV4iIiIiIiISJHh5eVFenr6VcfPnj3rkvEvFYXExMRc9b6YmBgqVKhwWRbgqjxXZilRogQAY8eOpXnz5tec96/dN/KS+Xp5r6QtWkREREREREREii4VeIiIiIiIiEiRUaFCBWJjYzl9+nR2UURGRgbz5893yfjNmzfHy8uLH374gbvvvjv7+Jo1azh69OhlBR6X/n/79u1Ur149+/hvv/122ZitWrUiKCiI3bt352h7lNy68847+e233y77mDgcDqZNm3bVudqiRURERERERESk6FKBh4iIiIiIiBQZAwcO5N///jf33HMPL774ImlpaXzyySc4HA6XjB8cHMwLL7zA22+/zSOPPEL//v05fvw4I0eOvGrLkyZNmlC9enVeeOEFMjMzCQ4OZtasWaxateqy8/z8/Bg7dixDhgzh/Pnz9OvXj1KlSnHmzBm2bdvGmTNn+Pzzz/Oc+bXXXuO3336jXbt2/Pvf/8bHx4dPP/2UCxcuXHVuhQoVLitSyamjR48SFRUFwMGDBwGYPn169piNGzfOc34REREREREREckZq9kBRERERERERHKqYsWK/Prrr8THx9OvXz9efPFF+vfvzwMPPOCyOd58803eeecdFixYQM+ePRk7dixffPHFZV06AGw2G7Nnz6ZGjRo88cQTPPDAA3h6ejJu3Lirxhw8eDBLly4lOTmZxx9/nA4dOvDss8+yefNm2rdvf1N569Spw6JFiwgICGDIkCE89thj1KtXj3/96183Ne5fLV26lP79+9O/f3/++OMPgOzH13q+IiIiIiIiIiLiehbDMAyzQ4iIiIiIiIgUdm3btgVg2bJlpuYQEREREREREZHiSR08RERERERERERERERERERERAo5N7MDiIiIiIiIiAhkZmb+7futVitWq16nISIiIiIiIiJSXGmLFhERERERERGTHTlyhIoVK/7tOa+//jojR44smEAiIiIiIiIiIlLoqIOHiIiIiIiIiMkiIyOJioq64TkiIiIiIiIiIlJ8qYOHiIiIiIiIiIiIiIiIiIiISCGnzXtFRERERERERERERERERERECjlt0QI4nU5OnTqFv78/FovF7DgiIiIiIiIiIiIiIiIiIi5jGAZJSUlERkZitaoHgEhRpQIP4NSpU5QtW9bsGCIiIiIiIiIiIiIiIiIi+eb48eOUKVPG7Bgikkcq8AD8/f2BrAUtICDA5DQitw673c6CBQvo1KkT7u7uZscRkUJA64KIXEnrgohcSeuCiFxJ64KI/JXWBBG5ktaFnElMTKRs2bLZ90VFpGhSgQdkb8sSEBCgAg8RF7Lb7fj4+BAQEKBfqkQE0LogIlfTuiAiV9K6ICJX0rogIn+lNUFErqR1IXcu3RcVkaJJGyyJiIiIiIiIiIiIiIiIiIiIFHIq8BAREREREREREREREREREREp5FTgISIiIiIiIiIiIiIiIiIiIlLImVrgUaFCBSwWy1Vvw4YNA8AwDEaOHElkZCTe3t60bduWXbt2XTZGeno6Tz/9NCVKlMDX15eePXty4sQJM56OiIiIiIiIiIiIiIiIiIiISL4wtcAjKiqK6Ojo7LeFCxcC0L9/fwBGjx7Nhx9+yLhx44iKiiI8PJyOHTuSlJSUPcbw4cOZNWsWU6dOZdWqVSQnJ9OjRw8cDocpz0lERERERERERERERERERETE1Uwt8ChZsiTh4eHZb7///juVK1emTZs2GIbBRx99xKuvvkrfvn2pU6cOkyZNIiUlhSlTpgCQkJDAN998wwcffECHDh1o0KABkydPZseOHSxatMjMpyYiIiIiIiIiIiIiIiIiIiLiMm5mB7gkIyODyZMnM2LECCwWC4cOHSImJoZOnTpln+Pp6UmbNm1Ys2YNjz/+OJs2bcJut192TmRkJHXq1GHNmjV07tz5mnOlp6eTnp6e/TgxMREAu92O3W7Pp2coUvxc+n7S95WIXKJ1QUSupHVBRK6kdUFErqR1QUT+SmuCiFxJ60LO6OMjcmsoNAUev/zyC/Hx8QwdOhSAmJgYAMLCwi47LywsjKNHj2af4+HhQXBw8FXnXLr+Wt555x3eeOONq44vWLAAHx+fm3kaInINl7ZfEhG5ROuCiFxJ64KIXEnrgohcSeuCiPyV1gQRuZLWhb+XkpJidgQRcYFCU+DxzTff0LVrVyIjIy87brFYLntsGMZVx650o3NefvllRowYkf04MTGRsmXL0qlTJwICAvKQXkSuxW63s3DhQjp27Ii7u7vZcUSkENC6ICJX0rogIlfSuiAiV9K6ICJ/pTVBJGecdieO1EwcKZk4Ux1Z/7U78a3sj5u/h9nxXErrQs5c2tFARIq2QlHgcfToURYtWsTMmTOzj4WHhwNZXToiIiKyj8fGxmZ39QgPDycjI4O4uLjLunjExsbSsmXL687n6emJp6fnVcfd3d218IvkA31viciVtC6IyJW0LojIlbQuiMiVtC6IyF9pTRDJKuJIPpRAZpIdR0ommSmX/puJYXde8xpHop2w9mULOGnB0Lrw9/SxEbk1WM0OADBhwgRKlSpF9+7ds49VrFiR8PDwy9opZWRksHz58uzijUaNGuHu7n7ZOdHR0ezcufNvCzxEREREREREREREREREirL47Wc5tyaGhB3nSD6YQFp0CvaEjOziDoubFfdAD7wifPAp6wdAWkwKhmGYGVtERG6C6R08nE4nEyZMYMiQIbi5/S+OxWJh+PDhjBo1iqpVq1K1alVGjRqFj48P9913HwCBgYE8/PDDPP/884SGhhISEsILL7xA3bp16dChg1lPSURERERERERERERERCRfpRxNAsCnvD+eJbyw+bjj5uOGzccNN183rO627HMNp8HRH/bizHBij0/HI9jLrNgiInITTC/wWLRoEceOHeOhhx666n0vvfQSqampPPnkk8TFxdGsWTMWLFiAv79/9jljxozBzc2NAQMGkJqaSvv27Zk4cSI2m+2q8URERERERERERERERESKOntiBvaEDLBAiVYR2Dz//r6YxWrBs6Q3adEppJ1OVYGHiEgRZXqBR6dOna7bCspisTBy5EhGjhx53eu9vLwYO3YsY8eOzaeEIiIiIiIiIiIiIiIiIoVHyolkALzCfG5Y3HGJV5jPxQKPFAJqBOdnPBERySdWswOIiIiIiIiIiIiIiIiISM6lHM8q8PAp65fja7zCfABIO52SL5lERCT/qcBDREREREREREREREREpIhw2h2kxVwAwDsXBR6eJb3BAo4LmWQm2/MrnoiI5CMVeIiIiIiIiIiIiIiIiIgUEaknL4AT3PzdcQ/wyPF1VncrHqFegLp4iIgUVSrwEBERERERERERERERESkiUk5c2p7FH4vFkqtrtU2LiEjRpgIPERERERERERERERERkSLAMAxSjl8q8Mj59iyXeIV5A5B2OtWluUREpGCowENERERERERERERERESkCMg4m4YzzYHF3ZrdjSM3Ll1jj0/Hke5wdTwREclnKvAQERERERERERERERERKQIude/wLu2LxZa77VkAbF5uuAd6AJAeq21aRESKGhV4iIiIiIiIiIiIiIiIiBQBKceTAPApk/vtWS7xvNjFIy1G27SIiBQ1KvAQERERERERERERERERKeQyL9jJOJ8O3FyBh1cpbwDSTquDh4hIUaMCDxEREREREREREREREZFCLuVE1vYsniW9sXm75Xkcr/CsDh7p51JxZjpdkk1ERAqGCjxERERERERERERERERECrnU41kFHj5l8969A8DNzz2rQMQJ6We1TYuISFGiAg8RERERERERERERERGRQsyZ6ST11AUAvG+ywMNiseAVlrVNS/ppFXiIiBQlKvAQERERERERERERERERKcTSolMwHAY2Hzc8gj1vejzPsKxtWtJOp9z0WCIiUnBU4CEiIiIiIiIiIiIiIiJSiKWcSAKytmexWCw3PZ7XpQKP2FQMp3HT44mISMFQgYeIiIiIiIiIiIiIiIhIIWUYBinHk4GsAg9X8Aj2xOJuxbA7yYhLd8mYIiKS/1TgISIiIiIiIiIiIiIiIlJI2ePScVzIxGKz4BXh65IxLVYLXqW8AW3TIiJSlKjAQ0RERERERERERERERKSQSjmR1b3DK9IXq5vrbu1d2qYlXQUeIiJFhgo8RERERERERERERERERAqp7O1Zyrhme5ZLPC8WeKSdTsUwDJeOLSIi+UMFHiIiIiIiIiIiIiIiIiKFkCMtk/TYVAB8yrq4wKOEF1jB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s/Akdmc6Nj83qnSpSXWvumbHKlSS9sSTsPEs5a2ladalJRbr39/Xu1lFeV0oSJd2NBCRoi3XBR4jRoxg6NChjB49Gn9//+zjXbt2zdXWLNfi6+tL3bp12b9/P7179wayunRERPyv0jw2Nja7q0d4eDgZGRnExcVd1sUjNjaWli1bXnceT09PPD2vrjh1d3fXwi+SD/S9JSJX0rogIlfSuiAiV9K6ICJXKs7rwt59p/jq64WsXbsXAA8PN/r2ac79g+8gONjvsnObN6vGZ5/PZ9u2I4AFd/c8NXEWE+zadZyYmHi8vT1ofXutfPt6b9qsGjablZOnznP6dCJlyoTmyzz5rSiuCQsWbichMYWwsCDa3FEbNzeb2ZGu65mnuvPQI5+ycOF27runNdWr57x7+63McBqcXnYc+/l0rJ42IjqVx93fw+xYhU5QjVCSdsThSM4k42QqfpUCC2TeorguFCR9bERuDbne+CoqKorHH3/8quOlS5f+221RciI9PZ0///yTiIgIKlasSHh4+GXtlDIyMli+fHl28UajRo1wd3e/7Jzo6Gh27tz5twUeIiIiIiIiIiIiIkXBunX7eOjhT1m7di82m5XevZry09TneebpblcVdwBUqhRGcLAvaWl2du46bkJiyatFS7YDcHurGnh55d8NY18fT+rVLQ/A+vX78m0euZxhGEyfvhaAPr2bFeriDoAaNUrTqWN9AMZ+Og/DMExOZD7DMDi3NobUExew2CyEdSiLe6CKO67F6m4loFbWC7MTdpzL89ePIzXTlbFERG4JuS7w8PLyumYLn71791KyZMlcjfXCCy+wfPlyDh8+zPr16+nXrx+JiYkMGTIEi8XC8OHDGTVqFLNmzWLnzp0MHToUHx+f7E4hgYGBPPzwwzz//PMsXryYLVu2MHjwYOrWrUuHDh1y+9RERERERERERERECg3DMPhq/EIMw6BFi+r8+MNzvPRib0qVuv4roa1WK40bVQZg48YDBRVVbpLT6WTJkh0AdOhQP9/na9asGgDrN+zP97kky86dx9i77xQeHm70vKux2XFy5PHHOuHubmPz5kOsudhBqDiL33aOpH3xYIGSbUrjVcrb7EiFWkDNECxuFjLOp5N68kKurjUMg/jtZzk+/SDp59LyKaGISNGU6wKPXr168eabb2K32wGwWCwcO3aM//u//+Puu+/O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fvhhnn/+eRYvXsyWLVsYPHgwdevWpUOHDmY9NRERERERERGRvzV9xlq27ziKj7cH//d/fW56W5X77m1NUJAPx46dZc7czS5KKTdj46aDnIqOw8/Pi3Z31jE7zlUiwoNp364uAFN+XGlymlvT+bhk1q7L2hKiW9eGJqe5PovFwrPPdgdg/vyt7NyZ9/bWRcXci+tkt64Nc7z+uru70bx5NRV3/EWnjvWpX78CaWl2xn2au602pv20hiNHzhAU5Mtjj3Z0ebbgYD/GfvIwNS4Wr1WtGsGo/9yn4g4TWCyW7DXQarXw0gu9VdwhIiI3NGjQIObMmcO3337L4MGDs49XqVKFmTNnsnXrVrZt28Z9992H0+m87jje3t40b96cd999l927d7NixQpee+21y84ZNmwY58+f595772XDhg0cOnSIBQsW8NBDD+FwOPLtOeZVof4p+tJLLzF8+HCefPJJGjduzMmTJ1mwYAH+/v7Z54wZM4bevXszYMAAWrVqhY+PD7Nnz8Zm0ytVRERERERERKTwOX78LF98uQCAp4Z1JSI8+AZX3JivrxdDHrgTgG++XUxa2rXb00rB+eXXDQB06XwbXl6F81Vy997bGoAlS3cSHRNncppbz8KF23A4nNSqWYYKFUqZHedv1axRhu7dsl4V+dHHv//tH8mLumPHzrJ9x1GsVgtdujQwO06RZrFYeP65u7BaLSxZupONGw/k6LrTp+OZMHEJkPVz0N/fO1/yBQT4MHbsI4x8fSDjPnkEX1+vfJlHbqxP72Y0aVyFp4Z1pUaNwt8xSkREzNeuXTtCQkLYu3dvdvMHyKoNCA4OpmXLltx111107tyZhg3/vpj622+/xW6307hxY5599lnefvvty94fGRnJ6tWrcTgcdO7cmTp16vDss88SGBhYKLd1K1TlqsuWLbvsscViYeTIkYwcOfK613h5eTF27FjGjh2bv+FERERERERERG6S0+lk1DszSE+307hRZXr1auqysfv0bsa0n1YTExPPTz+v5YH727hsbMmdc+eSWLnyTwB69XTd59jVqleLpHGjymzcdJCfflrDs890NzvSLeVSl4iuhbh7x1898Xgnli7dwe4/TzB/wTa63qLFD3PnbQKgWbNqlCwRYHKaoq9KlQj69m3O9Olr+fCj2Uya8PQNu2SMHTeX1NQM6tUtT5fOt+VrPl8f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d+OF53u6pGtOzRplePONe2jZouBbkIuIiIhI4ebj48OKFSsoV64cffv2pWbNmjz00EOkpqYSEJC11WpoaCgbNmzggQce4L///S9Nmzalbt26jBw5koEDB/L111+blj/Xm/S+//779O/fn3nz5tGkSRMsFgtRUVHs2bOH6dOnAxAVFcXAgQNdHlZERERERESkKPvyywUAdO50G5Urhd/0eI883IGdO4+xecthXn1tCuO/ehJvb4+bHldy77vJywFo06YWFSqUMjnNjdWrV55WLWuwes0evh6/kLfevNfsSC7ndDqzixEG9G+J1apX8edVaKg/w4Z15d33ZjH+m0W0bVM7z8US5+OSeeGlScTExANgs1mJjAimbLkSlCtbknJlQy/+fwlKlAjAYrGQlpbOy698xfoN0Xz3/TIOHT7N6/8ecMMuD/P+2MKhQ6fx9/Ni6JC2ecor12axWBj2ZFcee+IL5s7bzMABrahcOec/15xOJ++8O5PFS3bg5mbjrTfuoU2b2vmYWERERESKkqFDhzJ06NCrjo8cOZKRI0dmP544ceJV5yxbtuyqY0eOHLnscXh4OJMmTfrbDIGBgYwaNYpRo0b97XnXmu96DMPI8bnXk+t/2fbs2ZN9+/bRrVs3zp8/z9mzZ+natSt79uyhR48eAPzjH//gww8/vOlwIiIiIiIiIreKjRsPELXxAG5uNh55uL1LxnRzs/HGyHsIDfXn8OFYRr//i0v+WCC5c/LkeRYt2gbAkPvbmhsmFx5/rCMWi4XFS3awd2/O9hUuSi51gvD386Jr14Zmxyny7urRmIYNKpKWZmf0+7/maa3JyMjk5VcmExMTT5kyoUz+7lmWLn6DaVOf5/3RQ3jm6W707t2MRg0rU7JkYPZe3TablbZtyvHKy33x8HBj1ao/eezxzzl58vx150pLy+CrrxcCMOSBOwkI8MnbE5frqlOnHG3b1sbpNPjsi/k5vs4wDN7/4Dfm/bEFm83KW2/eq+IOEREREZEcylWBh91u58477yQ9PZ133nmHmTNnMmvWLN555x0qVKiQTxFFREREREREijbDMPjiYveO3r2auHSbgNBQf9584x5sNivz52/l19+iXDa25MzkH5bjdBo0b1aN6tVLmx0nx6pUiaBjx/oAfPnVQpPTuN60n1cD0LNnE3xu0OlBbsxisfDPl/rg4eHGhg37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3sTR0dHU4YhICqC8ICLPU14QkecpL4jI85QXROTvlBNE5HnKC6/GaDTy+PFjPDw8MDMzM3U4IvKGtIIHYGZmRtasWU0dhkia5ejoqA9VIpKA8oKIPE95QUSep7wgIs9TXhCRv1NOEJHnKS/8N63cIZL6qTxLREREREREREREREREREREJIVTgYeIiIiIiIiIiIiIiIiIiIhICqcCDxFJMtbW1gwfPhxra2tThyIiKYTygog8T3lBRJ6nvCAiz1NeEJG/U04QkecpL4jIu8RgNBqNpg5CRERERERERERERERERERERP6ZVvAQERERERERERERERERERERSeFU4CEiIiIiIiIiIiIiIiIiIiKSwqnAQ0RERERERERERERERERERCSFU4GHiIiIiIiIiIiIiIiIiIiISAqnAg8R+Vd79uyhYcOGeHh4YDAYWL16dYLX7969S+fOnfHw8MDOzo46depw6dKlBG2qVq2KwWBI8GjTpk2CNo8ePaJDhw44OTnh5OREhw4dCA4OTuLZicibSI68cP36dbp27UqOHDmwtbUlV65cDB8+nMjIyOSYooi8puT6vPCXiIgIihYtisFg4NSpU0k0KxF5G8mZFzZs2ECZMmWwtbUlY8aMNGvWLCmnJiJvKLnywsWLF2ncuDEZM2bE0dGRChUqsHPnzqSenoi8psTICQAHDx7kvffeI126dKRPn56qVasSHh4e/7quOYqkHsmRF3TNUUTSAhV4iMi/evr0KUWKFGHKlCkvvGY0GmnSpAlXr15lzZo1nDx5kmzZslGjRg2ePn2aoG337t0JCAiIf0yfPj3B6+3atePUqVNs2rSJTZs2cerUKTp06JCkcxORN5MceeH8+fPExsYyffp0zpw5w8SJE/nll18YMmRIks9PRF5fcn1e+MugQYPw8PBIkrmISOJIrrywcuVKOnToQJcuXfjzzz/Zv38/7dq1S9K5icibSa68UL9+faKjo9mxYwfHjx+naNGiNGjQgMDAwCSdn4i8nsTICQcPHqROnTrUqlWLI0eOcPToUXr37o2Z2f/f9tA1R5HUIznygq45ikiaYBQReUWAcdWqVfHPL1y4YASMfn5+8ceio6ONzs7OxpkzZ8Yfq1KlirFv377/2O/Zs2eNgPHQoUPxxw4ePGgEjOfPn0/UOYhI4kqqvPAyY8eONebIkeNtQxaRJJbU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IiIiIiIiIiIiksKpwENEREREREREREREREREREQkhVOBh4iIiIiIiIiIiIiIiIiIiEgKpwIPERERERERERERERERERERkRROBR4iIiIiIiIiIiIiIiIiIiIiKZwKPERERERERERERERERERERERSOBV4iIiIiIiIiIiIiIiIiIiIiKRwKvAQERERERGRFG/EiBEULVo02cfdtWsXBoMBg8FAkyZNXqltcHBwssSWWnTu3Dn+PVy9erWpwxERERERERERSbVU4CEiIiIiIiIm9dfN/396dO7cmYEDB7J9+3aTxXjhwgXmzZsX/7xq1ar069cvQZvy5csTEBCAk5NT8gb3NymxyGTSpEkEBASYOgwRERERERERkVTPwtQBiIiIiIiIyLvt7zf/ly1bxldffcWFCxfij9na2mJvb4+9vb0pwgPA1dWV9OnT/2sbKysr3N3dkyegVMTJycmkRS8iIiIiIiIiImmFVvAQERERERERk3J3d49/ODk5YTAYXjj2/BYtnTt3pkmTJowZMwY3NzfSp0/PyJEjiY6O5rPPPsPZ2ZmsWbMyZ86cBGPdvn2b1q1bkyFDBlxcXGjcuDHXr19/rXg7d+7M7t27mTRpUvwqI9evX39h9Yx58+aRPn161q9fT968ebGzs6NFixY8ffqU+fPnkz17djJkyECfPn2IiYmJ7z8yMpJBgwaRJUsW0qVLR5kyZdi1a1f86zdu3KBhw4ZkyJCBdOnSUbBgQTZu3Mj169epVq0aABkyZIhf/QRg06ZNVKxYkfTp0+Pi4kKDBg24cuVKfJ/Xr1/HYDDw22+/UalSJWxtbSlVqhQXL17k6NGjlCxZEnt7e+rUqcO9e/de+DqMHDkSV1dXHB0d6dGjB5GRka/1noqIiIiIiIiIyH9TgYeIiIiIiIikSjt27ODOnTvs2bOHH374gREjRtCgQQMyZMjA4cOH6dmzJz179uTmzZsAhIWFUa1aNezt7dmzZw/79u2LL1p4nYKESZMmUa5cObp3705AQAABAQF4enq+tG1YWBiTJ09m6dKlbNq0iV27dtGsWTM2btzIxo0bWbhwITNmzGDFihXx53Tp0oX9+/ezdOlSTp8+TcuWLalTpw6XLl0CoFevXkRERLBnzx58fX35/vvvsbe3x9PTk5UrVwJxW8oEBAQwadIkAJ4+fUr//v05evQo27dvx8zMjKZNmxIbG5sg3uHDhzNs2DBOnDiBhYUFbdu2ZdCgQUyaNIm9e/dy5coVvvrqqwTnbN++nXPnzrFz506WLFnCqlWrGDly5Cu/nyIiIiIiIiIi8mq0RYuIiIiIiIikSs7OzkyePBkzMzPy5s3L2LFjCQsLY8iQIQAMHjyY7777jv3799OmTRuWLl2KmZkZs2bNwmAwADB37lzSp0/Prl27qFWr1iuN6+TkhJWVFXZ2dv+5JUtUVBTTpk0jV65cALRo0YKFCxdy9+5d7O3tKVCgANWqVWPnzp20bt2aK1eusGTJEm7duoWHhwcAAwcOZNOmTcydO5cxY8bg7+9P8+bNKVSoEAA5c+ZM8J7Ai1vKNG/ePEFcs2fPxtXVlbNnz+Lj4xN/fODAgdSuXRuAvn370rZtW7Zv306FChUA6Nq1K/PmzUvQl5WVFXPmzMHOzo6CBQvy9ddf89lnn/HNN99gZqa/KxERERERERERSSwq8BAREREREZFUqWDBggkKCNzc3BIUK5ibm+Pi4kJQUBAAx48f5/Llyzg4OCTo59mzZwm2K0lMdnZ28cUdf8WYPXt27O3tExz7K8YTJ05gNBrJkydPgn4iIiJwcXEB4JNPPuGjjz5iy5Yt1KhRg+bNm1O4cOF/jePKlSt8+eWXHDp0iPv378ev3OHv75/gPft7P25ubgDxhSTPx/qXIkWKYGdnF/+8XLlyPHnyhJs3b5ItW7Z/jUtERERERERERF6dCjxEREREREQkVbK0tEzw3GAwvPTYX8UMsbGxlChRgl9//fWFvjJlypRiYjQ3N+f48eOYm5snaPdXUUi3bt2oXbs2GzZsYMuWLXz77bdMmDCBPn36/GMcDRs2xNPTk5kzZ+Lh4UFsbCw+Pj4vbE3z99j+WuXk+WPPb+vyT/46X0REREREREREEocKPEREREREROSdULx4cZYtW4arqyuOjo5v1ZeVlRUxMTGJFNn/K1asGDExMQQFBVGpUqV/bOfp6UnPnj3p2bMngwcPZubMmfTp0wcrKyuABLE9ePCAc+fOMX369Pg+9+3bl2gx//nnn4SHh2NrawvAoUOHsLe3J2vWrIk2hoiIiIiIiIiIgDbDFRERERERkXdC+/btyZgxI40bN2bv3r1cu3aN3bt307dvX27duvVafWXPnp3Dhw9z/fr1BFuevK08efLQvn17OnbsyO+//861a9c4evQo33//PRs3bgSgX79+bN68mWvXrnHixAl27NhB/vz5AciWLRsGg4H169dz7949njx5QoYMGXBxcWHGjBlcvnyZHTt20L9//0SJFyAyMpKuXbty9uxZ/vjjD4YPH07v3r0TbJ8jIiIiIiIiIiJvT1dbRERERERE5J1gZ2fHnj178PLyolmzZuTPn58PPviA8PDw117RY+DAgZibm1OgQAEyZcqEv79/osU5d+5cOnbsyIABA8ibNy+NGjXi8OHDeHp6AnGrc/Tq1Yv8+fNTp04d8ubNy9SpUwHIkiULI0eO5IsvvsDNzS2+0GLp0qUcP34cHx8fPv30U8aNG5do8VavXh1vb28qV65Mq1ataNiwISNGjEi0/kVEREREREREJI7BaDQaTR2EiIiIiIiISEq0a9cuqlWrxqNHj0ifPr2pw0lxOnfuTHBwMKtXr/7PtgaDgVWrVtGkSZMkj0tEREREREREJC3SCh4iIiIiIiIi/yFr1qy0bdvW1GGkSj179sTe3t7UYYiIiIiIiIiIpHpawUNERERERETkH4SHh3P79m0A7O3tcXd3N3FEKcurrOARFBREaGgoAJkzZyZdunTJFJ2IiIiIiIiISNqiAg8RERERERERERERERERERGRFE5btIiIiIiIiIiIiIiIiIiIiIikcCrwEBEREREREREREREREREREUnhVOAhIiIiIiIiIiIiIiIiIiIiksKpwENEREREREREREREREREREQkhVOBh4iIiIiIiIiIiIiIiIiIiEgKpwIPERERERERERERERERERERkRROBR4iIiIiIiIiIiIiIiIiIiIiKZwKPERERERERERERERERERERERSOBV4iIiIiIiIiIiIiIiIiIiIiKRw/weIcWNtKY1qrgAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 2400x350 with 1 Axes>"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "nixtla_client.plot(\n",
    "    df, timegpt_fcst_finetune_mae_df, \n",
    "    time_col='timestamp', target_col='value',\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now, depending on your data, you will use a specific error metric to accurately evaluate your forecasting model's performance.\\\n",
    "\\\n",
    "Below is a non-exhaustive guide on which metric to use depending on your use case.\\\n",
    "\\\n",
    "**Mean absolute error (MAE)**\\\n",
    "\\\n",
    "<img src=\"https://latex.codecogs.com/svg.image?\\mathrm{MAE}(\\mathbf{y}_{\\tau}, \\mathbf{\\hat{y}}_{\\tau}) = \\frac{1}{H} \\sum^{t+H}_{\\tau=t+1} |y_{\\tau} - \\hat{y}_{\\tau}|\" />\n",
    "\n",
    "- Robust to outliers\n",
    "- Easy to understand\n",
    "- You care equally about all error sizes\n",
    "- Same units as your data\n",
    "\n",
    "**Mean squared error (MSE)**\\\n",
    "\\\n",
    "<img src=\"https://latex.codecogs.com/svg.image?\\mathrm{MSE}(\\mathbf{y}_{\\tau}, \\mathbf{\\hat{y}}_{\\tau}) = \\frac{1}{H} \\sum^{t+H}_{\\tau=t+1} (y_{\\tau} - \\hat{y}_{\\tau})^{2}\" />\n",
    "\n",
    "- You want to penalize large errors more than small ones\n",
    "- Sensitive to outliers\n",
    "- Used when large errors must be avoided\n",
    "- *Not* the same units as your data\n",
    "\n",
    "**Root mean squared error (RMSE)**\\\n",
    "\\\n",
    "<img src=\"https://latex.codecogs.com/svg.image?\\mathrm{RMSE}(\\mathbf{y}_{\\tau}, \\mathbf{\\hat{y}}_{\\tau}) = \\sqrt{\\frac{1}{H} \\sum^{t+H}_{\\tau=t+1} (y_{\\tau} - \\hat{y}_{\\tau})^{2}}\" />\n",
    "\n",
    "- Brings the MSE back to original units of data\n",
    "- Penalizes large errors more than small ones\n",
    "\n",
    "**Mean absolute percentage error (MAPE)**\\\n",
    "\\\n",
    "<img src=\"https://latex.codecogs.com/svg.image?\\mathrm{MAPE}(\\mathbf{y}_{\\tau}, \\mathbf{\\hat{y}}_{\\tau}) = \\frac{1}{H} \\sum^{t+H}_{\\tau=t+1} \\frac{|y_{\\tau}-\\hat{y}_{\\tau}|}{|y_{\\tau}|}\" />\n",
    "\n",
    "- Easy to understand for non-technical stakeholders\n",
    "- Expressed as a percentage\n",
    "- Heavier penalty on positive errors over negative errors\n",
    "- To be avoided if your data has values close to 0 or equal to 0\n",
    "\n",
    "**Symmmetric mean absolute percentage error (sMAPE)**\\\n",
    "\\\n",
    "<img src=\"https://latex.codecogs.com/svg.image?\\mathrm{SMAPE}_{2}(\\mathbf{y}_{\\tau}, \\mathbf{\\hat{y}}_{\\tau}) = \\frac{1}{H} \\sum^{t+H}_{\\tau=t+1} \\frac{|y_{\\tau}-\\hat{y}_{\\tau}|}{|y_{\\tau}|+|\\hat{y}_{\\tau}|}\" />\n",
    "\n",
    "- Fixes bias of MAPE\n",
    "- Equally senstitive to over and under forecasting\n",
    "- To be avoided if your data has values close to 0 or equal to 0\n",
    "\n",
    "With TimeGPT, you can choose your loss function during fine-tuning as to maximize the model's performance metric for your particular use case.\\\n",
    "\\\n",
    "Let's run a small experiment to see how each loss function improves their associated metric when compared to the default setting."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "train = df[:-36]\n",
    "test = df[-36:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:nixtla.nixtla_client:Validating inputs...\n",
      "INFO:nixtla.nixtla_client:Preprocessing dataframes...\n",
      "INFO:nixtla.nixtla_client:Inferred freq: MS\n",
      "WARNING:nixtla.nixtla_client:The specified horizon \"h\" exceeds the model horizon. This may lead to less accurate forecasts. Please consider using a smaller horizon.\n",
      "INFO:nixtla.nixtla_client:Calling Forecast Endpoint...\n",
      "INFO:nixtla.nixtla_client:Validating inputs...\n",
      "INFO:nixtla.nixtla_client:Preprocessing dataframes...\n",
      "INFO:nixtla.nixtla_client:Inferred freq: MS\n",
      "WARNING:nixtla.nixtla_client:The specified horizon \"h\" exceeds the model horizon. This may lead to less accurate forecasts. Please consider using a smaller horizon.\n",
      "INFO:nixtla.nixtla_client:Calling Forecast Endpoint...\n",
      "INFO:nixtla.nixtla_client:Validating inputs...\n",
      "INFO:nixtla.nixtla_client:Preprocessing dataframes...\n",
      "INFO:nixtla.nixtla_client:Inferred freq: MS\n",
      "WARNING:nixtla.nixtla_client:The specified horizon \"h\" exceeds the model horizon. This may lead to less accurate forecasts. Please consider using a smaller horizon.\n",
      "INFO:nixtla.nixtla_client:Calling Forecast Endpoint...\n",
      "INFO:nixtla.nixtla_client:Validating inputs...\n",
      "INFO:nixtla.nixtla_client:Preprocessing dataframes...\n",
      "INFO:nixtla.nixtla_client:Inferred freq: MS\n",
      "WARNING:nixtla.nixtla_client:The specified horizon \"h\" exceeds the model horizon. This may lead to less accurate forecasts. Please consider using a smaller horizon.\n",
      "INFO:nixtla.nixtla_client:Calling Forecast Endpoint...\n",
      "INFO:nixtla.nixtla_client:Validating inputs...\n",
      "INFO:nixtla.nixtla_client:Preprocessing dataframes...\n",
      "INFO:nixtla.nixtla_client:Inferred freq: MS\n",
      "WARNING:nixtla.nixtla_client:The specified horizon \"h\" exceeds the model horizon. This may lead to less accurate forecasts. Please consider using a smaller horizon.\n",
      "INFO:nixtla.nixtla_client:Calling Forecast Endpoint...\n",
      "INFO:nixtla.nixtla_client:Validating inputs...\n",
      "INFO:nixtla.nixtla_client:Preprocessing dataframes...\n",
      "INFO:nixtla.nixtla_client:Inferred freq: MS\n",
      "WARNING:nixtla.nixtla_client:The specified horizon \"h\" exceeds the model horizon. This may lead to less accurate forecasts. Please consider using a smaller horizon.\n",
      "INFO:nixtla.nixtla_client:Calling Forecast Endpoint...\n"
     ]
    }
   ],
   "source": [
    "losses = ['default', 'mae', 'mse', 'rmse', 'mape', 'smape']\n",
    "\n",
    "test = test.copy()\n",
    "\n",
    "for loss in losses:\n",
    "    preds_df = nixtla_client.forecast(\n",
    "    df=train, \n",
    "    h=36, \n",
    "    finetune_steps=10,\n",
    "    finetune_loss=loss,\n",
    "    time_col='timestamp', \n",
    "    target_col='value')\n",
    "\n",
    "    preds = preds_df['TimeGPT'].values\n",
    "\n",
    "    test.loc[:,f'TimeGPT_{loss}'] = preds"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "> 📘 Available models in Azure AI\n",
    ">\n",
    "> If you are using an Azure AI endpoint, please be sure to set `model=\"azureai\"`:\n",
    ">\n",
    "> `nixtla_client.forecast(..., model=\"azureai\")`\n",
    "> \n",
    "> For the public API, we support two models: `timegpt-1` and `timegpt-1-long-horizon`. \n",
    "> \n",
    "> By default, `timegpt-1` is used. Please see [this tutorial](https://docs.nixtla.io/docs/tutorials-long_horizon_forecasting) on how and when to use `timegpt-1-long-horizon`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>unique_id</th>\n",
       "      <th>timestamp</th>\n",
       "      <th>value</th>\n",
       "      <th>TimeGPT_default</th>\n",
       "      <th>TimeGPT_mae</th>\n",
       "      <th>TimeGPT_mse</th>\n",
       "      <th>TimeGPT_rmse</th>\n",
       "      <th>TimeGPT_mape</th>\n",
       "      <th>TimeGPT_smape</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>108</th>\n",
       "      <td>1</td>\n",
       "      <td>1958-01-01</td>\n",
       "      <td>340</td>\n",
       "      <td>347.134094</td>\n",
       "      <td>341.933563</td>\n",
       "      <td>347.600616</td>\n",
       "      <td>347.059113</td>\n",
       "      <td>356.154938</td>\n",
       "      <td>341.958679</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>109</th>\n",
       "      <td>1</td>\n",
       "      <td>1958-02-01</td>\n",
       "      <td>318</td>\n",
       "      <td>345.739746</td>\n",
       "      <td>343.268738</td>\n",
       "      <td>346.399963</td>\n",
       "      <td>345.678314</td>\n",
       "      <td>354.163422</td>\n",
       "      <td>343.929657</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>110</th>\n",
       "      <td>1</td>\n",
       "      <td>1958-03-01</td>\n",
       "      <td>362</td>\n",
       "      <td>394.611450</td>\n",
       "      <td>390.873169</td>\n",
       "      <td>395.436646</td>\n",
       "      <td>394.636627</td>\n",
       "      <td>396.496155</td>\n",
       "      <td>392.543640</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>111</th>\n",
       "      <td>1</td>\n",
       "      <td>1958-04-01</td>\n",
       "      <td>348</td>\n",
       "      <td>404.133545</td>\n",
       "      <td>400.997070</td>\n",
       "      <td>404.369598</td>\n",
       "      <td>403.498901</td>\n",
       "      <td>396.927185</td>\n",
       "      <td>402.459625</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>112</th>\n",
       "      <td>1</td>\n",
       "      <td>1958-05-01</td>\n",
       "      <td>363</td>\n",
       "      <td>421.236542</td>\n",
       "      <td>418.793365</td>\n",
       "      <td>422.122223</td>\n",
       "      <td>421.541443</td>\n",
       "      <td>410.335663</td>\n",
       "      <td>422.161255</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     unique_id   timestamp  value  TimeGPT_default  TimeGPT_mae  TimeGPT_mse  \\\n",
       "108          1  1958-01-01    340       347.134094   341.933563   347.600616   \n",
       "109          1  1958-02-01    318       345.739746   343.268738   346.399963   \n",
       "110          1  1958-03-01    362       394.611450   390.873169   395.436646   \n",
       "111          1  1958-04-01    348       404.133545   400.997070   404.369598   \n",
       "112          1  1958-05-01    363       421.236542   418.793365   422.122223   \n",
       "\n",
       "     TimeGPT_rmse  TimeGPT_mape  TimeGPT_smape  \n",
       "108    347.059113    356.154938     341.958679  \n",
       "109    345.678314    354.163422     343.929657  \n",
       "110    394.636627    396.496155     392.543640  \n",
       "111    403.498901    396.927185     402.459625  \n",
       "112    421.541443    410.335663     422.161255  "
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#| hide\n",
    "test.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Great! We have predictions from TimeGPT using all the different loss functions. We can evaluate the performance using their associated metric and measure the improvement."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "loss_fct_dict = {\n",
    "    \"mae\": mae,\n",
    "    \"mse\": mse,\n",
    "    \"rmse\": rmse,\n",
    "    \"mape\": mape,\n",
    "    \"smape\": smape\n",
    "}\n",
    "\n",
    "pct_improv = []\n",
    "\n",
    "for loss in losses[1:]:\n",
    "    evaluation = loss_fct_dict[f'{loss}'](test, models=['TimeGPT_default', f'TimeGPT_{loss}'], id_col='unique_id', target_col='value')\n",
    "    pct_diff = (evaluation['TimeGPT_default'] - evaluation[f'TimeGPT_{loss}']) / evaluation['TimeGPT_default'] * 100\n",
    "    pct_improv.append(round(pct_diff, 2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>mae</th>\n",
       "      <th>mse</th>\n",
       "      <th>rmse</th>\n",
       "      <th>mape</th>\n",
       "      <th>smape</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Metric improvement (%)</th>\n",
       "      <td>8.54</td>\n",
       "      <td>0.31</td>\n",
       "      <td>0.64</td>\n",
       "      <td>31.02</td>\n",
       "      <td>7.36</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                         mae   mse  rmse   mape  smape\n",
       "Metric improvement (%)  8.54  0.31  0.64  31.02   7.36"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = {\n",
    "    'mae': pct_improv[0].values,\n",
    "    'mse': pct_improv[1].values,\n",
    "    'rmse': pct_improv[2].values,\n",
    "    'mape': pct_improv[3].values,\n",
    "    'smape': pct_improv[4].values\n",
    "}\n",
    "\n",
    "metrics_df = pd.DataFrame(data)\n",
    "metrics_df.index = ['Metric improvement (%)']\n",
    "\n",
    "metrics_df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "From the table above, we can see that using a specific loss function during fine-tuning will improve its associated error metric when compared to the default loss function.\\\n",
    "\\\n",
    "In this example, using the MAE as the loss function improves the metric by 8.54% when compared to using the default loss function.\\\n",
    "\\\n",
    "That way, depending on your use case and performance metric, you can use the appropriate loss function to maximize the accuracy of the forecasts."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "python3",
   "language": "python",
   "name": "python3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
